Retrieving
a String That Describes a Filter
An
application often needs to display a string that describes the current format.
This task can be accomplished easily with the acmFilterTagDetails
BOOL GetFilterDescription
(
LPWAVEFILTER pwfltr,
LPTSTR pszFilterTag,
LPTSTR pszFilter
)
{
MMRESULT mmr;
//
Retrieve the name for the filter tag of the specified filter.
if (NULL
!= pszFilterTag) {
ACMFILTERTAGDETAILS aftd;
//
Initialize all unused members of the ACMFILTERTAGDETAILS
//
structure to zero.
memset(&aftd, 0, sizeof(aftd));
//
Fill in the required members of the ACMFILTERTAGDETAILS
//
structure for the ACM_FILTERTAGDETAILSF_FILTERTAG query.
aftd.cbStruct = sizeof(aftd);
aftd.dwFilterTag = pwfltr->dwFilterTag;
// Ask
the ACM to find the first available driver that
//
supports the specified filter tag.
mmr =
acmFilterTagDetails(NULL, &aftd,
ACM_FILTERTAGDETAILSF_FILTERTAG);
if
(MMSYSERR_NOERROR != mmr) {
//
No ACM driver is available that supports the
//
specified filter tag.
return (FALSE);
}
//
Copy the filter tag name into the calling application's
//
buffer.
lstrcpy(pszFilterTag, aftd.szFilterTag);
}
//
Retrieve the description of the attributes for the specified
// filter.
if (NULL
!= pszFilter) {
ACMFILTERDETAILS
afd;
//
Initialize all unused members of the ACMFILTERDETAILS
//
structure to zero.
memset(&afd, 0, sizeof(afd));
//
Fill in the required members of the ACMFILTERDETAILS
//
structure for the ACM_FILTERDETAILSF_FILTER query.
afd.cbStruct = sizeof(afd);
afd.dwFilterTag = pwfltr->dwFilterTag;
afd.pwfltr = pwfltr;
afd.cbwfltr = pwfltr->cbStruct;
// Ask
the ACM to find the first available driver that
//
supports the specified filter.
mmr =
acmFilterDetails(NULL, &afd, ACM_FILTERDETAILSF_FILTER);
if
(MMSYSERR_NOERROR != mmr) {
//
No ACM driver is available that supports the
//
specified filter.
return (FALSE);
}
//
Copy the filter attributes description into the calling
//
application's buffer.
lstrcpy(pszFilter,
afd.szFilter);
}
return
(TRUE);
}